#ifndef _ERROR_H_
#define _ERROR_H_

#define UNDIFINED_VARIABLE 1
#define UNDIFINED_FUNCTION 2
#define REDEFINED_VARIABLE 3
#define REDEFINED_FUNCTION 4
#define ASSIGNMENT_TYPE_MISMATCH 5
#define INVALID_LEFT_HAND 6
#define OPERANDS_TYPE_MISMATCH 7
#define RETURN_TYPE_MISMATCH 8
#define PARAMETER_MISMATCH 9
#define NOT_ARRAY 10
#define NOT_FUNCTION 11
#define NOT_INTEGER_INDEX 12
#define NOT_STRUCT 13
#define NOT_EXIST_FILED 14
#define REDIFINED_OR_INIT_FILED 15
#define REDEFINED_STRUCT 16
#define UNDEFINED_STRUCT 17
#define UNDEFINED_FUNCTION_STATEMENT 18
#define CONFLICT_FUNCTION_DEFINATION 19

extern int semantic_error;

void PrintErrorMsg(int error_type, int line, int n, ...);

#endif